class MyQueue {
private:
    stack<int> stk1,stk2;

    void in2out() {
        while (!stk1.empty()) {
            stk2.push(stk1.top());
            stk1.pop();
        }
    }

public:
    MyQueue() {}

    void push(int x) {
        stk1.push(x);
    }

    int pop() {
        if (stk2.empty()) {
            in2out();
        }
        int x = stk2.top();
        stk2.pop();
        return x;
    }

    int peek() {
        if (stk2.empty()) {
            in2out();
        }
        return stk2.top();
    }

    bool empty() {
        return stk1.empty() && stk2.empty();
    }
};


